import os

import yaml
import json
from configparser import ConfigParser
from common.logger import logger

class MyConfigParser(ConfigParser):
    # 重写configparser中的optionxform函数，解决.ini文件中的键option自动转为大写的问题
    def __init__(self, defaults=None):
        ConfigParser.__init__(self, defaults)

    def optionxform(self, optionstr):
        return optionstr

class ReadFileData(object):
    def __init__(self):
        pass
    # 读取yaml文件
    def load_yaml(self, file_path):
        logger.info(f'正在加载 {file_path} 文件.....')
        with open(file_path, 'r',encoding='utf-8') as f:
            data = yaml.load(stream=f,Loader=yaml.FullLoader)
        # logger.info(f'读取到数据 ===> {data}')
        return data
    # 读取json文件
    def load_json(self, file_path):
        logger.info(f'正在加载 {file_path} 文件.....')
        with open(file_path, 'r',encoding='utf-8') as f:
            data = json.load(f)
        # logger.info(f'读取到数据 ===> {data}')
        return data
    # 读取ini文件
    def load_ini(self, file_path):
        logger.info(f'正在加载 {file_path} 文件.....')
        config = MyConfigParser()
        config.read(file_path,encoding='utf-8')
        data = dict(config._sections)
        # logger.info(f'读取到数据 ===> {data}')
        return data

data = ReadFileData()

if __name__ == '__main__':
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    yaml_path = os.path.join(BASE_DIR, 'data', 'test_data.yaml')
    read_ymal = data.load_yaml(yaml_path)
    print(read_ymal)

